﻿using AisEncodingLib.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AisEncodingLib.Models
{
	public class AisMessageType1Through3
	{
		/// <summary>
		/// 用户ID
		/// </summary>
		public int Mmsi { get; init; }

		/// <summary>
		/// 消息ID
		/// </summary>
		public int MessageType { get; init; }

		/// <summary>
		/// 地面航线
		/// </summary>
		public double CourseOverGround { get; init; }

		/// <summary>
		/// 特定操纵指示符
		/// </summary>
		public ManoeuvreIndicator ManoeuvreIndicator { get; init; }

		/// <summary>
		/// 导航状态
		/// </summary>
		public NavigationStatus NavigationStatus { get; init; }

		/// <summary>
		/// 经度
		/// </summary>
		public double Longitude { get; init; }

		/// <summary>
		/// 纬度
		/// </summary>
		public double Latitude { get; init; }

		/// <summary>
		/// 位置准确度
		/// True = 1 = 高（> 10 m）
		/// False = 0 = 低（< 10 m）
		/// </summary>
		public bool PositionAccuracy { get; init; }

		/// <summary>
		/// 时隙超时，规定的帧保持直到选择了一个新的时隙为止
		/// 0 表示这是在这一帧中最后的发送
		/// 1-7 表示1至7帧离开直到时隙变化为
		/// </summary>
		public int RadioSlotTimeout { get; init; }

		/// <summary>
		/// 子消息，取决于时隙超时中的当前数值
		/// </summary>
		public int RadioSubMessage { get; init; }

		/// <summary>
		/// 同步状态
		/// </summary>
		public RadioSyncState RadioSyncState { get; init; }

		/// <summary>
		/// 旋转速率
		/// </summary>
		public int RateOfTurn { get; init; }

		/// <summary>
		/// RAIM标志
		/// 0 = RAIM未使用 = 默认值；
		/// 1 = RAIM正在使用
		/// </summary>
		public bool RaimFlag { get; init; }

		/// <summary>
		/// 转发指示符
		/// </summary>
		public int RepeatIndicator { get; init; }

		/// <summary>
		/// 地面航速
		/// </summary>
		public double SpeedOverGround { get; init; }

		/// <summary>
		/// 时间戳(单位：秒)
		/// </summary>
		public int TimeStampSecond { get; init; }

		/// <summary>
		/// 实际航向
		/// </summary>
		public int TrueHeadingDegrees { get; init; }
	}
}
